package com.stylefeng.guns.modular.netcar.model;

import com.baomidou.mybatisplus.activerecord.Model;
import com.baomidou.mybatisplus.annotations.TableField;
import com.baomidou.mybatisplus.annotations.TableId;
import com.baomidou.mybatisplus.annotations.TableName;
import com.baomidou.mybatisplus.enums.IdType;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@Data
@EqualsAndHashCode(callSuper=true)
@TableName("order_inf")
 /**
 * 订单信息
 *
 * @author sasazaixian
 * @Date 2018-10-25 18:11
 * @TableField(exist = false) 实现属性与数据库字段不一一对应
 */
public class OrderInf extends Model<OrderInf> {
    private static final long serialVersionUID = 1L;
    /**
     * 主键id
     * 自动生成后修改成实际的主键 
     */
    @TableId(value = "oi_id", type = IdType.UUID)
    @ApiModelProperty(value = "主键")
    private String oiId;
    @Override
    protected Serializable pkVal() {
        return this.oiId;
    }
    //扩展能查询字段
    @TableField(exist = false) 
    private String key ;
    //开始日期
    @TableField(exist = false)     
    private String sdate;//预约开始时间
    //截止日期 
    @TableField(exist = false) 
	private String edate;//预约解释时间
    //排序字段
    @TableField(exist = false) 
	private String  sortField ;
	//排序	
	@TableField(exist = false) 
	private String sortOrder;
    @TableField(exist = false)
    private String noHistory; //1时起效，调度查询预约时间已经过了24小时和未过的数据
    @TableField(exist = false)
    private String dispather;//1 按照调度员所属线路查询
    @TableField(exist = false)
    private String dispatherLineIds;//调度员所属线路
    @TableField(exist = false)
    private Date sdateFlight;//查询 航班起飞时间段
    @TableField(exist = false)
    private Date edateFlight;//查询  航班起飞时间段

    @TableField(exist = false)
    private Date scdate;//查询  订单创建开始时间
    @TableField(exist = false)
    private Date ecdate;//查询  订单创建截止时间
    @TableField(exist = false)

    private Date sedate;//查询 任务结束时间段
    @TableField(exist = false)
    private Date eedate;//查询 任务结束时间段

    @TableField(exist = false)
    private String taskId;//任务ID
    @TableField(exist = false)
    private String taskCode;//任务编号
    @TableField("coupon_id")
    @ApiModelProperty(value = "优惠券ID")
    private String couponid;//优惠券ID
    @ApiModelProperty(value = "抵扣费用")
    @TableField("coupon_fee")
    private String couponFee;//抵扣费用
    @ApiModelProperty(value = "订单编号")
    @TableField("oi_code")
    private String oiCode;     //订单编号

    @ApiModelProperty(value = "订单类型 城际（CJ)/机场专线（JC）")
    @TableField("ot_id")
    private String otId;     //订单类型 城际（CJ)/机场专线（JC）

    @ApiModelProperty(value = "订单类型名称 城际/机场接机/机场送机")
    @TableField("ot_name")
    private String otName;     //订单类型名称 城际/机场接机/机场送机

    @ApiModelProperty(value = "订单服务类型:0（送）1（接）")
    @TableField("osc_id")
    private String oscId;     //订单服务类型:0（送）1（接）

    @ApiModelProperty(value = "车辆服务类型code 0(专)/1(快车)")
    @TableField("ost_id")
    private String ostId;     //车辆服务类型code 0(专)/1(快车)

    @ApiModelProperty(value = "车辆服务名称 0(专)/1(快车)")
    @TableField("ost_name")
    private String ostName;     //车辆服务名称 0(专)/1(快车)

    @ApiModelProperty(value = "线路id")
    @TableField("ol_id")
    private String olId;     //线路id

    @ApiModelProperty(value = "订单名称 城际（线路名称）/机场接送（机场接送）")
    @TableField("ol_name")
    private String olName;     //订单名称 城际（线路名称）/机场接送（机场接送）

    @ApiModelProperty(value = "创建时间")
    @TableField("create_time")
    private Date createTime;     //创建时间

    @ApiModelProperty(value = "创建人 乘客下单时 为空")
    @TableField("create_user")
    private String createUser;     //创建人 乘客下单时 为空

    @ApiModelProperty(value = "更新时间")
    @TableField("update_time")
    private Date updateTime;     //更新时间

    @ApiModelProperty(value = "更新人 乘客取消等操作时  为空")
    @TableField("update_user")
    private String updateUser;     //更新人 乘客取消等操作时  为空

    @ApiModelProperty(value = "乘客id")
    @TableField("ci_id")
    private String ciId;     //乘客id

    @ApiModelProperty(value = "乘客姓名")
    @TableField("ci_name")
    private String ciName;     //乘客姓名

    @ApiModelProperty(value = "乘客手机")
    @TableField("ci_tel")
    private String ciTel;     //乘客手机

    @ApiModelProperty(value = "乘车人数")
    @TableField("ci_num")
    private Integer ciNum;     //乘车人数

    @ApiModelProperty(value = "总价")
    @TableField("ci_total_price")
    private BigDecimal ciTotalPrice;     //总价

    @ApiModelProperty(value = "行程公里数")
    @TableField("oi_distance")
    private Double oiDistance;     //行程公里数

    @ApiModelProperty(value = "起点区域加价")
    @TableField("oi_origin_price")
    private BigDecimal oiOriginPrice;     //起点区域加价

    @ApiModelProperty(value = "目的区域加价")
    @TableField("oi_dest_price")
    private BigDecimal oiDestPrice;     //目的区域加价

    @ApiModelProperty(value = "标准价")
    @TableField("base_price")
    private BigDecimal basePrice;     //标准价

    @ApiModelProperty(value = "里程加价")
    @TableField("distance_price")
    private BigDecimal distancePrice;     //里程加价

    @ApiModelProperty(value = "超时段加价")
    @TableField("time_price")
    private BigDecimal timePrice;     //超时段加价

    @ApiModelProperty(value = "日期加价")
    @TableField("date_price")
    private BigDecimal datePrice;     //日期加价

    @ApiModelProperty(value = "出发地地址")
    @TableField("oi_start_address")
    private String oiStartAddress;     //出发地地址

    @ApiModelProperty(value = "出发地经纬度")
    @TableField("oi_start_point")
    private String oiStartPoint;     //出发地经纬度

    @ApiModelProperty(value = "目的地地址")
    @TableField("oi_end_address")
    private String oiEndAddress;     //目的地地址

    @ApiModelProperty(value = "目的地经纬度")
    @TableField("oi_end_point")
    private String oiEndPoint;     //目的地经纬度

    @ApiModelProperty(value = "乘客预约时间")
    @TableField("ci_send_time")
    private Date ciSendTime;     //乘客预约时间

    @ApiModelProperty(value = "乘客状态：0未乘车，1已乘车，2已取消，3已下车")
    @TableField("ci_state")
    private String ciState;     //乘客状态：0未乘车，1已乘车，2已取消，3已下车

    @ApiModelProperty(value = "上车时间")
    @TableField("ci_get_on_time")
    private Date ciGetOnTime;     //上车时间

    @ApiModelProperty(value = "上车经纬度")
    @TableField("ci_get_on_pos")
    private String ciGetOnPos;     //上车经纬度

    @ApiModelProperty(value = "上车地址")
    @TableField("ci_get_on_addr")
    private String ciGetOnAddr;     //上车地址

    @ApiModelProperty(value = "下车时间")
    @TableField("ci_get_off_time")
    private Date ciGetOffTime;     //下车时间

    @ApiModelProperty(value = "下车经纬度")
    @TableField("ci_get_off_pos")
    private String ciGetOffPos;     //下车经纬度

    @ApiModelProperty(value = "下车地址")
    @TableField("ci_get_off_addr")
    private String  ciGetOffAddr;     //下车地址

    @ApiModelProperty(value = "支付状态，0未付款，1已付款，2退款中，3已退款")
    @TableField("pay_state")
    private String payState;     //支付状态，0未付款，1已付款，2退款中，3已退款

    @ApiModelProperty(value = "实付金额")
    @TableField("pay_fee")
    private BigDecimal payFee;     //实付金额

    @ApiModelProperty(value = "支付时间")
    @TableField("pay_time")
    private Date payTime;     //支付时间

    @ApiModelProperty(value = "已打包/未打包 0（未打包）1（已打包）")
    @TableField("oi_package_state")
    private String oiPackageState;     //已打包/未打包 0（未打包）1（已打包）

    @ApiModelProperty(value = "是否自动打包过 0从未 1 自动打包过")
    @TableField("oi_auto_packaged")
    private String oiAutoPackaged;     //是否自动打包过 0从未 1 自动打包过

    @ApiModelProperty(value = "是否新订单 1:新订单 0：旧订单")
    @TableField("oi_new_flg")
    private String oiNewFlg;     //是否新订单 1:新订单 0：旧订单

    @ApiModelProperty(value = "外部订单id")
    @TableField("oi_external_order_id")
    private String oiExternalOrderId;     //外部订单id

    @ApiModelProperty(value = "乘车验证码")
    @TableField("oi_qrcode")
    private String oiQrcode;     //乘车验证码

    @ApiModelProperty(value = "预约时间段开始时间")
    @TableField("oi_order_time_start")
    private Date oiOrderTimeStart;     //预约时间段开始时间

    @ApiModelProperty(value = "预约时间段结束时间")
    @TableField("oi_order_time_end")
    private Date oiOrderTimeEnd;     //预约时间段结束时间

    @ApiModelProperty(value = "发票 0（不需要）1：（需要）")
    @TableField("oi_contain_invoice")
    private String oiContainInvoice;     //发票 0（不需要）1：（需要）

    @ApiModelProperty(value = "其他说明")
    @TableField("note")
    private String note;     //其他说明

    @ApiModelProperty(value = "起飞/开车时间")
    @TableField("ex_send_time")
    private Date exSendTime;     //起飞/开车时间

    @ApiModelProperty(value = "落地/到达时间")
    @TableField("ex_arr_time")
    private Date exArrTime;     //落地/到达时间

    @ApiModelProperty(value = "航段")
    @TableField("ex_flight_leg")
    private String exFlightLeg;     //航段

    @ApiModelProperty(value = "航班号/车次")
    @TableField("ex_other_no")
    private String exOtherNo;     //航班号/车次

    @ApiModelProperty(value = "票号")
    @TableField("ex_ticket_no")
    private String exTicketNo;     //票号

    @ApiModelProperty(value = "车队ID")
    @TableField("so_id")
    private String soId;     //车队打包指派订单

    @ApiModelProperty(value = "订单的未付款的截止时间")
    @TableField("ci_valid_time")
    private Date ciValidTime; //订单的未付款的截止时间

    @ApiModelProperty(value = "车型价格 现在本车提供的最大座位")
    @TableField("vpt_code")
    private String vptCode; //车型价格

    @ApiModelProperty(value = "投诉内容")
    @TableField("content")
    private String content;//投诉内容

    @TableField(exist=false)
    private List<OrderUserRelation> list;

    @TableField(exist = false)
    private String orderWriter;//录单人

    @TableField(exist = false)
    private String orderTime;//预约时段

    @TableField(exist = false)
    private String vptName;//预约车型

    @TableField(exist = false)
    private String tiId;//任务单ID

    @TableField(exist = false)
    private String tiCode;//任务单编码

    @TableField(exist = false)
    private String tiDispatcher;//派单员

    @TableField(exist = false)
    private String tiCustomerCount;//任务单人数

    @TableField(exist = false)
    private String tiCreateTime;//任务单创建时间

    @TableField(exist = false)
    private String tiTaskGetTime;//任务指派时间

    @TableField(exist = false)
    private String diName;//驾驶员姓名

    @TableField(exist = false)
    private String diOrg;//驾驶员所属单位

    @TableField(exist = false)
    private String diPhone;//驾驶员手机

    @TableField(exist = false)
    private String diVehiclePlate;//任务指派车牌号

    @TableField(exist = false)
    private String tiStartTime;//任务开始时间

    @TableField(exist = false)
    private String ctStartAddress;//任务开始地址

    @TableField(exist = false)
    private String tiEndTime;//任务结束时间

    @TableField(exist = false)
    private String ctEndAddress;//任务结束地址

    @TableField(exist = false)
    private String tiState;//任务单状态

    @TableField(exist = false)
    private BigDecimal refundFee;//退款费用

}
